//
// ----------------------------------------------------------------------------
// 文件： ArrayList.h
// 日期： 2019年03月04日
// 功能： 数组列表访问类库头文件
// 版本： v2.0
// 作者： 谈新
// 邮件： tx@btc.sh.cn
// ----------------------------------------------------------------------------
//

#ifndef ARRAYLIST_H_INCLUDE
#define ARRAYLIST_H_INCLUDE

#include "ArrayListStruct.h"

#ifdef __cplusplus
extern "C" {
#endif

extern ARRAYLIST     al;   // 客户端队列
extern NAMELIST      nl;   // 客户端名字列表

int  ArrayListInit(ARRAYLIST *lst,unsigned int max);                         // 构造一个空列表
int  NameListInit(NAMELIST *lst, unsigned int max);
void ArrayListDestroy(ARRAYLIST *lst);                                       // 销毁列表
void NameListDestroy(NAMELIST *lst);
void ArrayListClear(ARRAYLIST *lst);                                         // 清为空列表
void NameListClear(NAMELIST *lst);
int  ArrayListIsEmpty(ARRAYLIST *lst);                                       // 若列表为空列表,则返回1,否则返回0 
int  ArrayListLength(ARRAYLIST *lst);                                        // 返回列表的长度 
int  ArrayListInsert(ARRAYLIST *lst,int fd,char *name,char *ip,unsigned short port);    // 插入列表 
int  NameListInsert(NAMELIST *lst, char *name);
int  ArrayListDelete(ARRAYLIST *lst,ITEMDATA *dat);                          // 删除列表记录 
int  NameListDelete(NAMELIST *lst, char* name);
int  ArrayListDeleteByFD(ARRAYLIST *lst,int fd);                             // 删除列表记录 
int  ArrayListUpdateActive(ARRAYLIST *lst,int fd);                           // 更新记录活动时间
int  ArrayListUpdateLogin(ARRAYLIST *lst,int fd,char *name,int conflict);    // 更新记录登陆状态
int  ArrayListDisplay(ARRAYLIST *lst,void (*func)(ARRAYLIST *l));            // 显示列表

int  NameToFd(ARRAYLIST *lst,char *name);              // 通过名字在列表中查询设备号

int  ArrayListUpdateByInt(ARRAYLIST *lst,int id,ITEMDATA *dat,int (*func)(ARRAYLIST *l,int i,ITEMDATA *d)); // 更新列表 
int  ArrayListFindByInt(ARRAYLIST *lst,int id,ITEMDATA *dat,int (*func)(ARRAYLIST *l,int i,ITEMDATA *d)); // 查找列表 
int  ArrayListCallback(ARRAYLIST *lst,int (*func)(ARRAYLIST *l));            // 列表功能回调函数

#ifdef __cplusplus
}
#endif

#endif

